package com.plug.repository;

import com.plug.entity.PlugContrast;
import com.plug.entity.PlugDatasource;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface PlugContrastMapper {
    /**
     * 根据任务ID删除
     * @param plugContrastList
     * @return
     */
    int deleteByPrimaryKey(List<PlugContrast> plugContrastList);

    List<Map<String, Object>> findDataSourceAndContrast();

    /**
     * 新增数据配置信息
     * @param contrastList
     * @return
     */
    int insert(PlugContrast contrastList);

    PlugContrast findTaskID(@Param("taskID")String taskID);

    /**
     *
     * @param record
     * @return
     */
    int insertSelective(PlugContrast record);

    /**
     * 查询所有任务列表
     * @return
     */
    List<PlugContrast> findTaskAll();

    /**
     *
     * @param id
     * @return
     */
    PlugContrast selectByPrimaryKey(Long id);

    /**
     * 修改单条记录
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(PlugContrast record);

    /**
     *
     * @param record
     * @return
     */
    int updateByPrimaryKey(PlugContrast record);

    /**
     * 根据数据库ID查询数据库是否有被关联
     * @param dsId 数据库ID
     * @return
     */
    int findContrastByDsID(@Param("dsId") Long dsId);

    /**
     * 查询所有
     * @return
     */
    List<PlugContrast> findAll();
    /**
     * 根据数据源查询所有表格
     * @param srcDsId 源数据源ID
     * @return
     */
    List<PlugContrast> findAllTable(@Param("srcDsId") Long srcDsId);
    /**
     * 根据目标数据源ID与源数据源ID查找备份记录
     * @param srcDsId 源数据源ID
     * @param tgtDsId 目标数据源ID
     * @return
     */

    /**
     * 获得目标数据源表
     * @param srcDsId 源数据源IDd
     * @param tgtDsId 目标数据源ID
     *  @param srcDsTable 源数据源表
     * @return
     */
    PlugContrast findTgtTable(@Param("srcDsId")Long srcDsId,@Param("srcDsTable")String srcDsTable,@Param("tgtDsId") Long tgtDsId);

    /**
     *
     * @param srcDsId
     * @param tgtDsId
     * @return
     */
    List<PlugContrast> findDataSourceID(@Param("srcDsId") Long srcDsId, @Param("tgtDsId") Long tgtDsId);

    /**
     * 根据传入源数据源、目标数据源、表名查询对象
     * @param srcDsId 源数据源ID
     * @param tgtDsId 目标数据源ID
     * @param srcTab 源数据表名
     * @return
     */
    PlugContrast findDatasourceByName(@Param("srcDsId") Long srcDsId, @Param("tgtDsId") Long tgtDsId, @Param("srcTab")String srcTab);

    /**
     * 查询所有的 数据源信息
     * @return
     */
    List<Map<String, Object>> dataSourecInfo(@Param("pageIndex")int pageIndex,@Param("pageSize")int pageSize);

    /**
     * 查询是否存在
     * @param record
     * @return
     */
    Integer selectContrast(PlugContrast record);
}